package miao.byusi.termux.gui.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.IOException;

/**
 * VNC相关功能工具类
 */
public class VncUtils {
    private static final Logger logger = LoggerFactory.getLogger(VncUtils.class);
    
    /**
     * 设置显示环境
     */
    public static void setupDisplay(int width, int height, int dpi) throws IOException {
        // 启动Xvfb虚拟帧缓冲区
        String xvfbCmd = String.format("Xvfb :1 -screen 0 %dx%dx24 -dpi %d &",
                width, height, dpi);
        ShellUtils.executeCommand(xvfbCmd);

        // 设置DISPLAY环境变量
        ShellUtils.executeCommand("export DISPLAY=:1");

        // 启动fluxbox窗口管理器
        ShellUtils.executeCommand("fluxbox &");
    }

    /**
     * 启动VNC服务器
     */
    public static void startVncServer(int port, String password) throws IOException {
        // 启动x11vnc服务器
        String vncCmd = String.format("x11vnc -display :1 -forever -noxdamage -rfbport %d -passwd %s &",
                port, password);
        ShellUtils.executeCommand(vncCmd);
    }

    /**
     * 安装必要的Termux软件包
     */
    public static void installTermuxPackages() throws IOException {
        // 更新软件包
        ShellUtils.executeCommand("pkg update -y");
        
        // 安装必要软件包
        String packages = "x11-repo fluxbox xorg-server-xvfb x11vnc";
        ShellUtils.executeCommand("pkg install -y " + packages);
        
        logger.info("必要软件包安装完成");
    }
}